function showMatrices(expNrs, runs, showTitles, showAllData)
    if(nargin < 1)
	expNrs = 1:12;
    end
    if(nargin < 2)
	runs = 0:10;
    end
    if(nargin < 3)
        showTitles = true;
    end
    if(nargin < 4)
        showAllData = false;
    end
    if(showTitles)
        getExperimentInfo;
        Titles = {experimentInfo{expNrs}};
    else 
        for k=1:length(expNrs); 
            Titles{k} = sprintf('experiment %i',expNrs(k)); 
        end;
    end


    nExps = length(expNrs);
    nRuns = length(runs);
    % Position values according to 'theory'
            posValue_player = [[ 100, -20,  10,   5,   5,  10, -20, 100]; ...
                                [-20, -50,  -2,  -2,  -2,  -2, -50, -20]; ...
                                 [10,  -2,  -1,  -1,  -1,  -1,  -2,  10]; ...
                                  [5,  -2,  -1,  -1,  -1,  -1,  -2,   5]; ...
                                  [5,  -2,  -1,  -1,  -1,  -1,  -2,   5]; ...
                                 [10,  -2,  -1,  -1,  -1,  -1,  -2,  10]; ...
                                [-20, -50,  -2,  -2,  -2,  -2, -50, -20]; ...
                                [100, -20,  10,   5,   5,  10, -20, 100]];
    error = zeros(1,nExps);
    for k = 1:nExps;
        exp = expNrs(k);
        mean_pos_value = zeros(8,8);
        h1=figure; %mean score of experiment
        if(showAllData)
            h2=figure; %all scores of exp: each run in subbplot
        end
        for l = 1:nRuns;
            if(showAllData)
                h3=figure; %weight matrices of run in subbplots
            end
            run = runs(l);
            clear net;
            eval(sprintf('exp%i_%i',exp,run));
            if(exp < 5) %TODO: why is this neccesary?
                net.f = @(x)(x);
            end
            
            %make-up for plot:
            FontSize = 15;
            Map = gray;
            Title = {'Position score', Titles{k}};
            
            % show positional analysis:

            % Position values according to network from this run
            posValue_network = zeros(8,8);
            for i=1:8;   
                for j=1:8;
                    board_m    = zeros(8,8);              %empty board
                    board_m(i,j) = 1;                     %put single stone
                    board_v    = removeSymmetry(board_m); %deal with symmetry
                    
		    posValue_network(i,j) = runNeuralNet(net, board_v(:));
                end
            end
            mean_pos_value = mean_pos_value + posValue_network / nRuns; %average all runs

            if(showAllData) %will produce lots of graphs
                %% Figure 2
                figure(h2);
                %show 
                subplot(ceil(sqrt(nRuns)),ceil(sqrt(nRuns)),l);
                    imagesc(posValue_network)
                    colormap(Map);
                    axis equal;
                    axis tight;
                    title(sprintf('run %i',run));

                %% Figure 3
                figure(h3);
                K = length(net.W); %nr of layers
                for i = 1:K;
                   subplot(ceil(sqrt(K)),ceil(sqrt(K)),i)
                   imagesc(net.W{i});

                   % makeup:
                   colormap(gray);
                   axis equal;
                   axis tight;
                   set( title(sprintf('net.W{%i}',i)), 'FontSize', FontSize);
                end
            end %end all data showing
        end %end of runs for single experiment
        
        scaled_pos_value = (mean_pos_value + 1) / 2;        %[-1, 1] --> [0,1]
	scaled_theory_value = (posValue_player + 50) / 150; %[-50, 100] --> [0, 1]

        error(k) = sum(abs(scaled_pos_value(:) - scaled_theory_value(:)));
        
        %% Figure 1
        figure(h1);
%        subplot(2,1,1)
            imagesc(scaled_pos_value);
            %makeup:
            set( title({Title{1:length(Title)},'network'}),      'FontSize', FontSize );
            colormap(Map);
            set(colorbar, 'Location', 'EastOutside');
            axis equal;
            axis tight;
            set( xlabel('x'), 'FontSize', FontSize );
            set( ylabel('y'), 'FontSize', FontSize );
%          subplot(2,1,2)
%              imagesc(abs(scaled_pos_value - scaled_theory_value));
%              colormap(Map);
%              set(colorbar, 'Location', 'EastOutside');
%              axis equal;
%              axis tight;
%              set( xlabel('x position'), 'FontSize', FontSize );
%              set( ylabel('y position'), 'FontSize', FontSize );
            set( title(sprintf('error on position score (total=%d)',error(k))), 'FontSize', FontSize );
    end %end of all experiments
     
    %% Figure 4
    figure;
    imagesc(scaled_theory_value);
    set( title({'Position score','theory'}),      'FontSize', FontSize );
                colormap(Map);
    set(colorbar, 'Location', 'EastOutside');
                axis equal;
                axis tight;
                set( xlabel('x'), 'FontSize', FontSize );
                set( ylabel('y'), 'FontSize', FontSize );
end